#ifndef CONFIG_PLATFORM_H
#define CONFIG_PLATFORM_H

namespace ssmt
{
	//A list of the supported operating systems
	namespace os
	{
		enum os
		{
			windows,
			ps3,
			unkown
		};
	}
	//Different filetypes of libraries
	namespace libraryType
	{
		enum libraryType
		{
			dll,
			prx,
			unkown
		};
	}

	//Check if any Windows specific preprocessor definition is defined
	#if ( defined( _WIN16 ) || defined( _WIN32 ) || defined( _WIN64 ) || defined( __WIN32__	) || defined( __TOS_WIN__ ) || defined( __WINDOWS__ ) )
		#define SSMT_PLATFORM_WINDOWS
		#define SSMT_LIBRARY_DLL
		#define SSMT_ALIGN(TYPE) __alignof(TYPE)
		static const ssmt::os::os platform = ssmt::os::windows;
		static const ssmt::libraryType::libraryType libtype = ssmt::libraryType::dll;
	
	//Check if any BSD specific preprocessor definition is defined
	#elif ( defined( __PS3__ ) )
		#define SSMT_PLATFORM_PS3
		#define SSMT_LIBRARY_PRX
		static const ssmt::os::os platform = ssmt::os::ps3;
		static const ssmt::libraryType::libraryType libtype = ssmt::libraryType::prx;
	
	//Must be something we dont cover..
	#else
		#define SSMT_PLATFORM_UNKNOWN
		#define SSMT_LIBRARY_UNKNOWN
		static const ssmt::os::os platform = ssmt::os::unkown;
		static const ssmt::libraryType::libraryType = ssmt::libraryType::unkown;
	#endif
} //namespace ssmt

#endif CONFIG_PLATFORM_H